#Название программы: Визуализация игры "Морской бой"
#Описание: Программа предназначена для визуализации игры "Морской бой". Пользователь вводит
#координаты 
#предполагаемых кораблей по очереди, через пробел в формате "а1", где а-j - координата по
#горизонтали, 
#1 -10 - координата повертикали. Пример ввода: ./seafight.sh a1 a4 b1 b4. Результатом выполнения 
#команды будет два двухпалубных корабля. Необходимо отметить, что если координаты корабля будут 
#введены сразу,например, а1 b1 a4 b4, то вторая координата b1 проигнорируется, так как прорисовка
#происходит последовательно,то есть в порядке a1 -> a4 -> b4. Программа проверяет случаи на пересения
#кораблей
#Автор : Кобелев Дмитрий
#Дата последнего изменения : 28.01.2014 23.12

help="Название программы: Визуализация игры Морской бой\\n
Описание: Программа предназначена для визуализации игры Морской бой. Пользователь вводит\\n
координаты\\n
предполагаемых кораблей по очереди, через пробел в формате а1, где а-j - координата по\\n
горизонтали,\\n
1 -10 - координата повертикали. Пример ввода: ./seafight.sh a1 a4 b1 b4. Результатом выполнения\\n 
команды будет два двухпалубных корабля. Необходимо отметить, что если координаты корабля будут\\n
введены сразу,например, а1 b1 a4 b4, то вторая координата b1 проигнорируется, так как прорисовка\\n
происходит последовательно,то есть в порядке a1 -> a4 -> b4. Программа проверяет случаи на пересения\\n
кораблей.Касание кораблей допускается.\\n" 

#!/bin/bash
size=$#
s=1
p=0
y=0

verticalScale="  1 2 3 4 5 6 7 8 9 10"

if [ $1 == "help" ]; then
echo -ne $help
exit 0
fi


#////Obtaining Coord
for l in "$@"
 do
    position[s]="${l}"
    let s=s+1
done
#////

CheckData()
{
for((i=1;i<size;i++))
do
let y=i+1
	for((j=y;j<size;j++))
	do
 if [ "${position[$i]}" == "${position[$j]}" ]; then
 echo -ne "Error, repeating coordinats!!! \\nTry to enter right coordinats!\\n"
 exit 0
 fi 
 done
done
}

CalculateLocation() 
{
if [ $p -eq $size ]; then
return 1
fi	
for((k=1+p;k<=size;k++))
do
	if [ "${position[$k]}" == "$1" ]; then
		let p=p+1
		return 0
			else
		return 1
	
	fi
done
}


DrawObject ()
{
	CalculateLocation $1
	returned_expr=$?
		
	if [ $returned_expr -eq 0 ]; then
		
		echo -n " X"
		
			else	
		echo -n " O"
				
	fi
}

Main ()
{ 
echo -ne "$verticalScale\\n"
for i in a b c d e f g h i j
	do
		echo -n $i
		for((j=1;j<=10;j++))
			do
			DrawObject "$i$j"
		done
		echo -ne "\\n"		
done
}

#Start of programm
CheckData
Main


 
